package com.zyhl.gmall.product.mytest.demo05;

import java.util.function.Predicate;

/**
 * Predicate接口通常用于判断参数是否满足指定的条件
 *     boolean test(T t) 对给定的参数进行判断(判断逻辑由Lambda表达式实现)，返回一个布尔值
 *     default Predicate negate() 返回一个逻辑的否定，对应逻辑非
 *     default Predicate and(Predicateother) 返回一个组合判断，对应短路与
 *     default Predicate or(Predicateother) 返回一个组合判断，对应短路或
 */
public class PredicateDemo01 {

    public static void main(String[] args) {
        boolean b = checkString("张三", s -> s.length() > 8);
        System.out.println("b="+b);

        boolean flag = checkString("张三",s -> s.length()>8,
                s -> s.length()<15);
        System.out.println("flag="+flag);
    }

    //同一个字符串给出两个不同的判断条件，最后把这两个判断的结果做逻辑与运算的结果作为最终的结果
    private static boolean checkString(String s,
                                       Predicate<String> pre1,
                                       Predicate<String> pre2){
        return pre1.and(pre2).test(s);
    }

    //判断字符串是否满足要求
    private static boolean checkString(String s,Predicate<String> pre){
        return pre.test(s);
    }

}
